{
  /*
    学习目标：函数的可选参数
     /*
    学习目标：函数类型小结
    意义：给参数和返回值限定类型，避免调用报错
    语法：
      1. 分开指定  function(参数: 类型, 参数2: 类型): 类型{  }
      2. 同时指定 type 类型名称 = (参数: 类型, 参数2: 类型) => 类型 
      注意：
        同时指定，只能给表达式声明的函数
      3. 默认值类型：
        3.1 没有return语句，我们一般用void表示返回值为空
      4. 可选参数
        4.1 形参名称后紧跟?
      注意：可选参数要放在必选参数的后面
  
  */

  let arr = [1, 2, 3];
  // arr.slice(0, 2);
  arr.slice(0);
  arr.slice();

  // 1. 可选参数，语法 参数后紧跟?: 类型
  function mySlice(start: number, end?: number) {
    console.log('start  ----->  ', start);
    console.log('end  ----->  ', end);
  }

  // 注意：💥可选参数要放在最后面去，必选参数要放在前面
  function mySlice2(start?: number, end?: number) {
    console.log('start  ----->  ', start);
    console.log('end  ----->  ', end);
  }

  // 定义4个参数，c d a b, ab为必传参数， c为可选参数， d为必选参数
  function test(a, b, d, c?: number) {}
  mySlice(1);
}
